package com.wzdigit.wms.basic.client.request.basic;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;

/**
 * 创建货品基本信息输入
 * @author yangdongjie
 * @CreateZoneGroupRequest.java
 * @2021年1月4日上午11:18:30
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler", "fieldHandler"}, ignoreUnknown = true)
public class CreateSkuBaseRequest implements Serializable {

	private static final long serialVersionUID = 4582864673308638739L;

	/**
	 * 货品代码
	 */
	@ApiModelProperty(value = "货品代码", required = true)
	@NotBlank(message = "货品代码不能为空")
    private String skuCode;

	/**
	 * 货主，客户主数据中 客户类型=货主，取客户ID
	 */
	@ApiModelProperty(value = "货主，客户主数据中 客户类型=货主，取客户ID", required = false)
    private Integer owner;

	/**
	 * 货品类别ID
	 */
	@ApiModelProperty(value = "货品类别ID", required = true)
	@NotNull(message = "货品类别不能为空")
    private Integer skuCateId;

	/**
	 * 货品短码
	 */
	@ApiModelProperty(value = "货品短码", required = false)
    private String shortCode;

	/**
	 * 货品中文描述
	 */
	@ApiModelProperty(value = "货品中文描述", required = true)
	@NotBlank(message = "货品中文描述不能为空")
    private String descCn;

	/**
	 * 货品英文描述
	 */
	@ApiModelProperty(value = "货品英文描述", required = false)
    private String descEn;

	/**
	 * 规格
	 */
	@ApiModelProperty(value = "规格", required = false)
    private String spec;

	/**
	 * 产品型号
	 */
	@ApiModelProperty(value = "产品型号", required = false)
    private String model;

	/**
	 * 商品码
	 */
	@ApiModelProperty(value = "商品码", required = false)
    private String commodityCode;

	/**
	 * 物料组
	 */
	@ApiModelProperty(value = "物料组", required = false)
    private String matGroup;

	/**
	 * 外部物料组
	 */
	@ApiModelProperty(value = "外部物料组", required = false)
    private String extMatGroup;

	/**
	 * 基本计量单位
	 */
	@ApiModelProperty(value = "基本计量单位", required = true)
	@NotBlank(message = "基本计量单位不能为空")
    private String baseUnit;

	/**
	 * 采购订单计量单位
	 */
	@ApiModelProperty(value = "采购订单计量单位", required = false)
    private String poUnit;

	/**
	 * 单位组ID
	 */
	@ApiModelProperty(value = "单位组ID", required = true)
	@NotNull(message = "单位组不能为空")
    private Integer unitGroupId;

	/**
	 * 重量单位
	 */
	@ApiModelProperty(value = "重量单位", required = false)
    private String weightUnit;

	/**
	 * 体积单位
	 */
	@ApiModelProperty(value = "体积单位", required = false)
    private String cubeUnit;

	/**
	 * 毛重
	 */
	@ApiModelProperty(value = "毛重", required = false)
    private BigDecimal grossWeight;

	/**
	 * 皮重
	 */
	@ApiModelProperty(value = "皮重", required = false)
    private BigDecimal tare;

	/**
	 * 净重
	 */
	@ApiModelProperty(value = "净重", required = false)
    private BigDecimal netWeight;

	/**
	 * 长
	 */
	@ApiModelProperty(value = "长", required = false)
    private BigDecimal length;

	/**
	 * 宽
	 */
	@ApiModelProperty(value = "宽", required = false)
    private BigDecimal width;

	/**
	 * 高
	 */
	@ApiModelProperty(value = "高", required = false)
    private BigDecimal height;

	/**
	 * 体积
	 */
	@ApiModelProperty(value = "体积", required = false)
    private BigDecimal cube;

	/**
	 * 价格
	 */
	@ApiModelProperty(value = "价格", required = false)
    private BigDecimal price;

	/**
	 * 有效期
	 */
	@ApiModelProperty(value = "有效期", required = false)
    private Integer validityPeriod;

	/**
	 * 湿敏等级
	 */
	@ApiModelProperty(value = "湿敏等级", required = false)
    private String msl;

	/**
	 * 特殊采购
	 */
	@ApiModelProperty(value = "特殊采购", required = false)
    private String specialPurchase;

	/**
	 * KeyPart类型
	 */
	@ApiModelProperty(value = "KeyPart类型", required = false)
    private String keyPartType;

	/**
	 * 最小标包
	 */
	@ApiModelProperty(value = "最小标包", required = false)
    private BigDecimal stdPkgQty;

	/**
	 * 条码管控类型：枚举类型：单品、批次
	 */
	@ApiModelProperty(value = "条码管控类型：枚举类型：单品、批次", required = false)
    private Integer barcodeControl;

	/**
	 * 条码解析方式：枚举类型：序号范围解析，条码解析
	 */
	@ApiModelProperty(value = "条码解析方式：枚举类型：序号范围解析，条码解析", required = true)
	@NotNull(message = "条码解析方式不能为空")
    private Integer barcodeParser;

	/**
	 * OEM物品
	 */
	@ApiModelProperty(value = "OEM物品", required = false)
    private Integer isOem;

	/**
	 * 默认供应商ID
	 */
	@ApiModelProperty(value = "默认供应商ID", required = false)
    private Integer defaultVendorId;

	/**
	 * 别名
	 */
	@ApiModelProperty(value = "别名1", required = false)
    private String alternateSku1;

	/**
	 * 别名
	 */
	@ApiModelProperty(value = "别名2", required = false)
    private String alternateSku2;

	/**
	 * 别名
	 */
	@ApiModelProperty(value = "别名3", required = false)
    private String alternateSku3;

	/**
	 * 别名
	 */
	@ApiModelProperty(value = "别名4", required = false)
    private String alternateSku4;

	/**
	 * 别名
	 */
	@ApiModelProperty(value = "别名5", required = false)
    private String alternateSku5;

	/**
	 * 产品组
	 */
	@ApiModelProperty(value = "产品组1", required = false)
    private String skuGroup1;

	/**
	 * 产品组
	 */
	@ApiModelProperty(value = "产品组2", required = false)
    private String skuGroup2;

	/**
	 * 产品组
	 */
	@ApiModelProperty(value = "产品组3", required = false)
    private String skuGroup3;

	/**
	 * 产品组
	 */
	@ApiModelProperty(value = "产品组4", required = false)
    private String skuGroup4;

	/**
	 * 产品组
	 */
	@ApiModelProperty(value = "产品组5", required = false)
    private String skuGroup5;

	/**
	 * 产品组
	 */
	@ApiModelProperty(value = "产品组6", required = false)
    private String skuGroup6;

	/**
	 * 产品组
	 */
	@ApiModelProperty(value = "产品组", required = false)
    private String skuGroup7;

	/**
	 * 产品组
	 */
	@ApiModelProperty(value = "产品组", required = false)
    private String skuGroup8;

	/**
	 * 产品组
	 */
	@ApiModelProperty(value = "产品组", required = false)
    private String skuGroup9;

	/**
	 * 来源方式  ERP同步/手动导入
	 */
	@ApiModelProperty(value = "来源方式  ERP同步/手动导入", required = false)
    private String dataSource;

	/**
	 * 是否启用
	 */
	@ApiModelProperty(value = "是否启用", required = true)
	@NotNull(message = "是否启用不能为空")
    private Integer isEnabled;

	/**
	 * 备注
	 */
	@ApiModelProperty(value = "备注", required = false)
    private String comments;
	
	/**
	 * 用户自定义字段4（条码管控类型：单品、批次）
	 */
	@ApiModelProperty(value = "用户自定义字段4（条码管控类型：单品、批次）", required = false)
    private String udf4;

	/**
	 * 用户自定义字段5（条码解析方式：序号范围解析，条码解析）
	 */
	@ApiModelProperty(value = "用户自定义字段5（条码解析方式：序号范围解析，条码解析）", required = true)
    private String udf5;
}